<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>code_specification</title>
</head>
<body>
<div>

    请勿过度使用 Object 对象
    <ol>
        <li> 请使用 {} 来代替 new Object()</li>
        <li> 请使用 "" 来代替 new String()</li>
        <li> 请使用 0 来代替 new Number()</li>
        <li> 请使用 false 来代替 new Boolean()</li>
        <li> 请使用 [] 来代替 new Array()</li>
        <li> 请使用 /()/ 来代替 new RegExp()</li>
        <li> 请使用 function (){}来代替 new Function()</li>
    </ol>
    <div id="demo"></div>
</div>
</body>



<!--
延迟 JavaScript 加载 ;  请把脚本放在页面底部，使浏览器首先加载页面
脚本在下载时，浏览器不会启动任何其他的下载。此外所有解析和渲染活动都可能会被阻塞。
-->
<script>
    /**
     * 请不要声明数值、字符串或布尔对象
     请始终将数值、字符串或布尔值视作原始值。而非对象。
     如果把这些类型声明为对象，会拖慢执行速度，并产生讨厌的副作用
     * */

    var x = "Bill";
    var y = new String("Bill");  // idea也报黄了,
    console.log(x === y); // 结果为 false，因为 x 是字符串，而 y 是对象。

    //或者甚至更糟：
    x = new String("Bill");
    y = new String("Bill");
    console.log(x === y); // 结果是 false，因为你无法比较对象。

    /**
     * 个人认为 这种就如同   Java 中的  int i = 1 ; 和  Integer i = 1 ; 一样;
     * 基本类型 用 包装类 来处理; 导致不必要的开销;
     * */
    var int1 = 1;
    var int2 = new Number(1);
    console.log(int1 === int2);  //false


    /**
     * 循环每迭代一次，循环中的每条语句，包括 for 语句，都会被执行。
     能够放在循环之外的语句或赋值会使循环运行得更快。
     这个例子速度我没有感觉出来;  但是底下的更加安全和保险;
     * */
    var arr = new Array(1000 * 1000 * 1000 * 2);
    var i;
    console.log(new Date());
    for (i = 0; i < arr.length; i++) {

    }
    console.log(new Date());
    // 更好的代码：
    var l = arr.length;
    for (i = 0; i < l; i++) {

    }
    console.log(new Date());


    /**
     *    避免不必要的变量 :  请不要创建不打算存储值的新变量。
     * */
    let firstName = "吴";
    let lastName = "sky";
    var fullName = firstName + " " + lastName;
    document.getElementById("demo").innerHTML = fullName;
    //请用这段代码：
    document.getElementById("demo").innerHTML = firstName + " " + lastName


    /**
     *    减少 DOM 访问
     与其他 JavaScript 相比，访问 HTML DOM 非常缓慢。
     假如您期望访问某个 DOM 元素若干次，那么只访问的第一次，就把它作为本地变量来使用：
     * */
    var obj;
    obj = document.getElementById("demo");
    obj.innerHTML = "Hello";


</script>


</html>
